<?php

namespace Illuminate\View;

/**
 * 视图查找器接口定义
 */
interface ViewFinderInterface
{
    /**
     * Hint path delimiter value.
     *
     * @var string
     */
    const HINT_PATH_DELIMITER = '::';

    /**
     * 获取视图的完全限定位置
     *
     * @param  string $view
     * @return string
     */
    public function find($view);

    /**
     * 向 finder 添加一个视图路径
     *
     * @param  string $location
     * @return void
     */
    public function addLocation($location);

    /**
     * 向 finder 添加一个命名空间
     *
     * @param  string $namespace
     * @param  string|array $hints
     * @return void
     */
    public function addNamespace($namespace, $hints);

    /**
     * 向 finder 最前面添加一个命名空间
     *
     * @param  string $namespace
     * @param  string|array $hints
     * @return void
     */
    public function prependNamespace($namespace, $hints);

    /**
     * 替换指定命名空间的提示符
     *
     * @param  string $namespace
     * @param  string|array $hints
     * @return void
     */
    public function replaceNamespace($namespace, $hints);

    /**
     * 向 finder 添加一个视图扩展名
     *
     * @param  string $extension
     * @return void
     */
    public function addExtension($extension);

    /**
     * 刷新视图缓存
     *
     * @return void
     */
    public function flush();
}
